Software piracy is a large problem for software developers. Software developers use various methods to prevent unauthorized use and distribution of their software products. One known method of protecting a software program involves a hardware device, such as a “dongle,” that is attachable to a computer. Prior to execution, the software program communicates with the hardware device to verify that the software program is operating on an authorized platform. In other words, the software program verifies that the hardware device is attached to the computer and authenticates the hardware device prior to executing. If the hardware device is authenticated, the software program is allowed to execute. However, if the hardware device is not attached or is not authenticated, the software program is prevented from executing.
Another known method of protecting a software program from unauthorized use is based on software protections included in the software program. To protect the software program from unauthorized use, the software program stores license data on the computer prior to execution. Software developers may use the license data to distribute the software program in a ‘trial’ version for use before a user purchases the software program. Trial versions may allow customers to use the software for free or for a nominal fee. Trial versions allow a potential customer to use the software for a limited time (e.g., trial period) after the date of installation or first-use without purchasing the full license. The trial version may allow the user to use only certain parts or may allow the user to use the full capabilities of the software program. When a user installs a trial version of the software, the license data indicates that the software program is operating under a trial license, as opposed to a full license that is received after purchasing the software program. The license data may also indicate an expiration date of the trial license, where after the expiration date, the software program prevents itself from executing and the user must purchase a full license to continue using the software program.
Trial licenses use persistence data. Persistence data is information written onto a hard disk of the computer at various locations. Persistence data contains the installation status of the software (e.g., trial version, full version, etc.) and, for the trial version, the persistence data may also contain the trial period expiration date. The persistence data is used by software developers to prevent users from downloading and/or installing multiple trial versions of the same software program without purchasing the software program. For example, if a trial version of a software program is installed on the computer multiple times, the software program will look for any persistence data stored on the computer before executing to determine whether the later installed software program is permitted to execute. Because persistence data is stored at various locations on the hard disk, it is difficult to find and delete all of the persistence data. Even uninstalling the software program does not remove the persistence data. Thus, persistence data is used by software developers to prevent a user from uninstalling and re-installing the software program. Otherwise, the user would be able to use the software program for another trail period.
However, simple known systems may be used to overcome the protection of the persistence data stored on a hard disk of a computer. If the user makes a backup copy of the hard disk (e.g., with a software program for backing up the hard disk, such as Norton Ghost Utility® or the Microsoft Windows XP® operating system recovery feature) before installation of the software program, and hence before the persistence data of the software program is stored on the hard disk, the backup copy of the hard disk can be restored at a later time (e.g., after the expiration of the trial license) to completely remove the persistence data from the hard disk of the computer. Without the persistence data, the software program does not know whether the user has restored a backup copy of the hard disk of the computer to install the software program for a new trial period. In this situation, a user could reinstall the software program for another trial period without having to purchase the software program. This may be used to circumvent the trial period of the software program, and is particularly detrimental to software developers of high-value software programs.
What is needed is a more secure solution to prevent software piracy, wherein the solution cannot be easily defeated by a simple backup/restore of the hard disk of a computer.